package com.dl.mall.service.user;

import com.alibaba.fastjson.JSONObject;
import com.dl.mall.entity.Page;
import com.dl.mall.entity.user.Order;
import com.dl.mall.entity.user.OrderInfo;
import com.dl.mall.entity.vo.CartVo;
import com.dl.mall.entity.vo.HistoryOrderVo;
import com.dl.mall.entity.vo.OrderCartVo;

import java.util.List;

/**
 * 订单类服务层
 * @author DL
 * @create 2022-04-13 14:00
 */
public interface OrderService {

    /**
     * 根据 订单id和状态 更新订单
     * @param orderId 订单id
     * @param orderState 状态
     * @return 是否成功
     */
    boolean modifyOrderById(String orderId, Integer orderState);

    /**
     * 根据 用户id和订单商品 生成订单
     * @param userId 用户id
     * @param cartVoList 订单商品信息
     * @return 订单信息
     */
    Order generateOrder(String userId, List<CartVo> cartVoList);

    /**
     * 根据 订单id 获得订单商品信息
     * @param orderId 订单id
     * @return 订单商品信息
     */
    List<OrderCartVo> getOrderCartVoById(String orderId);

    /**
     * 根据 订单号 查询订单信息
     * @param orderId 订单号
     * @return 订单
     */
    Order getOrderInfoById(String orderId);

    /**
     * 根据 订单id 使用支付宝支付，返回string内容
     * @param orderId 订单号
     * @return 支付宝生成内容
     */
    String aliPay(String orderId, String addressId);

    /**
     * 根据 订单id 查询订单商品信息
     * @param orderId 订单id
     * @return 信息
     */
    List<OrderInfo> getOrderInfoListById(String orderId);

    /**
     * 根据 用户id 获得历史订单信息（订单 + 商品）
     * @param userId 用户id
     * @return 历史订单信息
     */
    Page<HistoryOrderVo> getHistoryOrderInfo(String userId, JSONObject jsonObject);

}
